package com.baoyouqun.domain.Enum;


import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;

/**
 * 手机号隐私保护枚举类
 * 对应手机号隐私设置的选项，包含系统存储标识和前端显示名称
 */
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum PhonePrivacyEnum {

    /**
     * 仅允许平台虚拟号码联系
     */
    VIRTUAL_ONLY("virtual_only", "仅平台的虚拟号码联系自己"),

    /**
     * 仅公开本人真实号码联系
     */
    PUBLIC_ONLY("public_only", "仅公开自己号码来联系自己"),

    /**
     * 允许虚拟号码和真实号码联系
     */
    VIRTUAL_AND_REAL("virtual_and_real", "提供虚拟号码与本人真实号码来联系自己");

    /**
     * 系统存储标识（用于数据库/接口传输）
     */
    @EnumValue
    private final String value;

    /**
     * 前端/业务展示名称
     */
    private final String name;

    PhonePrivacyEnum(String value, String name) {
        this.value = value;
        this.name = name;
    }

    /**
     * 根据系统存储值匹配枚举
     *
     * @param value 存储的标识值（如"virtual_only"）
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 无效值时抛出异常
     */
    public static PhonePrivacyEnum valueOfDbValue(String value) {
        for (PhonePrivacyEnum item : values()) {
            if (item.value.equals(value)) {
                return item;
            }
        }
        throw new IllegalArgumentException("无效的手机号隐私保护标识：" + value);
    }
}
